<!DOCTYPE html>
<html>
<head><meta name="generator" content="Hexo 3.8.0">
  <meta charset="utf-8">
  

  
  <title>ZHB&#39;s Blog</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta property="og:type" content="website">
<meta property="og:title" content="ZHB&#39;s Blog">
<meta property="og:url" content="https://gkzhb.github.io/index.html">
<meta property="og:site_name" content="ZHB&#39;s Blog">
<meta property="og:locale" content="zh-Hans">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="ZHB&#39;s Blog">
  
    <link rel="alternate" href="/atom.xml" title="ZHB&#39;s Blog" type="application/atom+xml">
  
  
    <link rel="icon" href="/favicon.png">
  
  
    <link rel="stylesheet" href="/css/sourcecodepro.css">
    <!-- <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css"> -->
  
  <link rel="stylesheet" href="/css/style.css">
</head>
</html>
<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/" id="logo">ZHB&#39;s Blog</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/">Home</a>
        
          <a class="main-nav-link" href="/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="https://gkzhb.github.io"></form>
      </div>
    </div>
  </div>
</header>
      <div class="outer">
        <section id="main">
  
    <article id="post-ankisyncd" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2019/06/ankisyncd/" class="article-date">
  <time datetime="2019-06-23T06:35:11.000Z" itemprop="datePublished">2019-06-23</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Self-hosting/">Self-hosting</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2019/06/ankisyncd/">Anki 自建同步服务器 ankisyncd</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>Anki 是一个用于记忆的软件，客户端同时支持电脑端和移动端（除了 iOS 上 AnkiMobile 收费以外都是免费的）。如果要使用同步的功能，使用官方的 AnkiWeb 网速较慢，在同步大量的 media 文件的时候十分痛苦。GitHub 上有牛人实现了 Anki 同步的 API 接口，可以自建同步服务器：<a href="https://github.com/dsnopek/anki-sync-server" target="_blank" rel="noopener">dsnopek/anki-sync-server</a>。不过这个服务端已经很久没有维护过了，在电脑上最新的 Anki 已经无法正常同步了。于是我在 Google 上找到了一篇文章：<a href="http://genedan.com/no-127-ankisyncd-a-custom-sync-server-for-anki-2-1/" target="_blank" rel="noopener">ankisyncd – A Custom Sync Server for Anki 2.1 | Gene Dan's Blog</a>。我按照博客里提供的 <a href="https://github.com/tsudoko/anki-sync-server" target="_blank" rel="noopener">tsudoko/anki-sync-server</a> 对应的文档，成功在自己的 VPS 上搭建了服务器，并且在 Ankidroid 上和 Linux 端 2.1.11 版本的 Anki 上成功同步数据。</p>
<p><strong>注意</strong>：</p>
<ul>
<li>iOS 上 AnkiMobile 不支持自定义同步服务器</li>
<li>同步服务器没有 AnkiWeb 的网页端访问支持</li>
<li>ankisyncd 服务器支持 PC 端 Anki 版本 2.1.1 - 2.1.11，其中只有 2.1.9 版本不支持</li>
</ul>
        
          <p class="article-more-link">
            <a href="/2019/06/ankisyncd/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2019/06/ankisyncd/" data-id="cjx8qp12q0003pqw8l4yr3qn1" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Anki/">Anki</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-wallabag" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2019/04/wallabag/" class="article-date">
  <time datetime="2019-04-03T13:00:53.000Z" itemprop="datePublished">2019-04-03</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Software/">Software</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2019/04/wallabag/">自建”稍后阅读“服务—— wallabag</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>”稍后阅读“英文对应于 <em>Read-It-Later</em>，是指将碎片化信息中需要花时间仔细阅读思考或需要二次阅读消化的内容收集起来，待空余时间统一消化理解。国外这方面的知名应用服务商有 Pocket、 Instapaper 以及我之前一直使用的网速慢而且标签功能有 bug 的 Ioreader 等。由于国外服务商在国内网速较慢，而国内的也没找到附合心意的服务商，我选择自建服务 wallabag，运行在我的阿里云 VPS（Virtual Private Server 虚拟专用服务器）上。</p>
        
          <p class="article-more-link">
            <a href="/2019/04/wallabag/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2019/04/wallabag/" data-id="cjx8qksqd0013nrw8heck3ujd" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Read-It-Later/">Read-It-Later</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Server/">Server</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/折腾/">折腾</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-ngrok" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2019/03/ngrok/" class="article-date">
  <time datetime="2019-03-16T11:18:13.000Z" itemprop="datePublished">2019-03-16</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Programming/">Programming</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2019/03/ngrok/">使用 ngrok 实现内网穿透（自建 ngrok 服务器）</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>有时候我希望能直接通过互联网访问到层层路由下的个人电脑，但是在没有固定 IPv4 的情况下很难做到这一点。一个解决方法就是使用内网穿透技术，而我选择用 ngrok 来实现。ngrok 在 1.x 版本时是开源的，到了 2.x 版本就闭源了。因为自建 ngrok 服务器需要将自己生成的证书编译到客户端中，所以只能使用开源的 1.x 版本从源码编译生成。</p>
        
          <p class="article-more-link">
            <a href="/2019/03/ngrok/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2019/03/ngrok/" data-id="cjx8qksqc0012nrw8lddw4qmt" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Network/">Network</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-hexo-tag-plugins" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2019/02/hexo-tag-plugins/" class="article-date">
  <time datetime="2019-02-19T13:30:00.000Z" itemprop="datePublished">2019-02-19</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2019/02/hexo-tag-plugins/">Hexo 标签插件使用</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>本文来源于 <a href="https://hexo.io/zh-cn/docs/tag-plugins" target="_blank" rel="noopener">Hexo 官方文档</a></p>
        
          <p class="article-more-link">
            <a href="/2019/02/hexo-tag-plugins/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2019/02/hexo-tag-plugins/" data-id="cjx8qks8w000nnrw8x9mmtjgv" class="article-share-link">Share</a>
      
      
    </footer>
  </div>
  
</article>



  
    <article id="post-spring" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2019/02/spring/" class="article-date">
  <time datetime="2019-02-19T07:22:33.000Z" itemprop="datePublished">2019-02-19</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Programming/">Programming</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2019/02/spring/">Spring 入门笔记</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>Spring in Action <em>4th Edition</em> 笔记</p>
        
          <p class="article-more-link">
            <a href="/2019/02/spring/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2019/02/spring/" data-id="cjx8qks8u000jnrw8nsqiszwh" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Spring/">Spring</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-sven" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2019/02/sven/" class="article-date">
  <time datetime="2019-02-14T16:00:00.000Z" itemprop="datePublished">2019-02-15</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Self-hosting/">Self-hosting</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2019/02/sven/">搭建 sven 服务器记录</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>sven 是 hl 的一个 mod，可以多人联机打怪或对战。</p>
<p>本文使用的服务器为阿里云的 VPS，安装的系统为 Ubuntu 16.04。</p>
<ul>
<li>官方安装教程：<a href="http://www.svencoop.com/manual/server-basic.html" target="_blank" rel="noopener">Sven Co-op Manual :: Running a server (basic installation)</a></li>
</ul>
        
          <p class="article-more-link">
            <a href="/2019/02/sven/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2019/02/sven/" data-id="cjx8qwkwg0006pqw8ahj3sle2" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Games/">Games</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Linux/">Linux</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-hexo" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2019/01/hexo/" class="article-date">
  <time datetime="2019-01-01T13:35:16.000Z" itemprop="datePublished">2019-01-01</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Self-hosting/">Self-hosting</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2019/01/hexo/">Hexo 博客搭建折腾记录</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>记录自己搭建本博客的过程。</p>
        
          <p class="article-more-link">
            <a href="/2019/01/hexo/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2019/01/hexo/" data-id="cjx8rzvpe000r9jw8quqsldsc" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Blog/">Blog</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-memory" class="article article-type-post" itemscope itemprop="blogPost">


   <style type="text/css">
           img, video {
                -webkit-box-shadow:0 0 10px rgba(0, 0, 0, .5);  
                -moz-box-shadow:0 0 10px rgba(0, 0, 0, .5);  
                box-shadow:0 0 10px rgba(0, 0, 0, .5);  
           }
   </style>


  <div class="article-meta">
    <a href="/2018/12/memory/" class="article-date">
  <time datetime="2018-12-14T16:32:43.000Z" itemprop="datePublished">2018-12-15</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Landscape/">Landscape</a>
  </div>

  </div>
  <div class="article-inner">
    
<div class="article-gallery">
  <div class="article-gallery-photos">
    
      <a class="article-gallery-img fancybox" href="/assets/九江.jpeg" rel="gallery_cjx8qks8q000enrw8woauw9gg">
        <img src="/assets/九江.jpeg" itemprop="image">
      </a>
    
  </div>
</div>

    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2018/12/memory/">改革开放 40 年回忆</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>一篇关于家乡江西九江几十年变化的文章。</p>
<p><em>封面图由我个人拍摄 哈哈</em></p>
<p><em>// 图多杀猫</em></p>
        
          <p class="article-more-link">
            <a href="/2018/12/memory/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2018/12/memory/" data-id="cjx8qks8q000enrw8woauw9gg" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Hometown/">Hometown</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Recall/">Recall</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-grep" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2018/11/grep/" class="article-date">
  <time datetime="2018-11-07T09:33:47.000Z" itemprop="datePublished">2018-11-07</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Linux/">Linux</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2018/11/grep/">Using Grep &amp; Regular Expressions</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>From <a href="https://www.digitalocean.com/community/tutorials/using-grep-regular-expressions-to-search-for-text-patterns-in-linux" target="_blank" rel="noopener">Using Grep &amp; Regular Expressions to Search for Text Patterns in Linux</a></p>
        
          <p class="article-more-link">
            <a href="/2018/11/grep/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2018/11/grep/" data-id="cjx8qks8d0000nrw8xe9bz2eg" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Command-Line/">Command Line</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Linux/">Linux</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Regular-Expression/">Regular Expression</a></li></ul>

    </footer>
  </div>
  
</article>



  
    <article id="post-sort" class="article article-type-post" itemscope itemprop="blogPost">



  <div class="article-meta">
    <a href="/2018/11/sort/" class="article-date">
  <time datetime="2018-11-05T15:15:59.000Z" itemprop="datePublished">2018-11-05</time>
</a>
    
  <div class="article-category">
    <a class="article-category-link" href="/categories/Programming/">Programming</a>
  </div>

  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 itemprop="name">
      <a class="article-title" href="/2018/11/sort/">排序</a>
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>数据结构课后整理的一部分内容。（没啥干货，就不要再点开看了）</p>
        
          <p class="article-more-link">
            <a href="/2018/11/sort/#more">Read More</a>
          </p>
        
      
    </div>
    <footer class="article-footer">
      <a data-url="https://gkzhb.github.io/2018/11/sort/" data-id="cjx8qks8t000inrw8trbextkm" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Data-Structure/">Data Structure</a></li></ul>

    </footer>
  </div>
  
</article>



  


</section>
        
          <aside id="sidebar">
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Categories</h3>
    <div class="widget">
      <ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/Landscape/">Landscape</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/Linux/">Linux</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/Programming/">Programming</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/Self-hosting/">Self-hosting</a></li><li class="category-list-item"><a class="category-list-link" href="/categories/Software/">Software</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tags</h3>
    <div class="widget">
      <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/tags/Anki/">Anki</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Blog/">Blog</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Command-Line/">Command Line</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Data-Structure/">Data Structure</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Games/">Games</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Hometown/">Hometown</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Linux/">Linux</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Network/">Network</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Read-It-Later/">Read-It-Later</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Recall/">Recall</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Regular-Expression/">Regular Expression</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Server/">Server</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Spring/">Spring</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/折腾/">折腾</a></li></ul>
    </div>
  </div>


  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy; 2019 Haibin Zhang<br>
      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>
    </div>
    <nav id="mobile-nav">
  
    <a href="/" class="mobile-nav-link">Home</a>
  
    <a href="/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    

<!-- <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> -->

<!-- <script src="http://apps.bdimg.com/libs/jquery/2.0.3/jquery.min.js"></script> -->
<script src="/mathjax/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<script src="/js/jquery.min.js"></script>

  <link rel="stylesheet" href="/fancybox/jquery.fancybox.css">
  <script src="/fancybox/jquery.fancybox.pack.js"></script>


<script src="/js/script.js"></script>




  </div>
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
		messageStyle: "none",
		showProcessingMessages: false,
        tex2jax: {
            inlineMath: [ ["$","$"], ["\\(","\\)"] ],
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
            processEscapes: true
        }
    });
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax();
        for (var i = 0; i < all.length; ++i)
            all[i].SourceElement().parentNode.className += ' has-jax';
    });
</script>
<!-- <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> -->
<script src="/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

</body>
</html>